﻿using System;
using System.Collections;



namespace Csharp栈
{


    
    #region 栈与队列
    //栈与队列
    //栈：也是system.Collections 下的数据结构类
    //储存的依然是object类型的对象

    //Stack 名字=new Stack();

    #endregion


    class Program
    {
        static void Main(string[] args)
        {
            Stack stack = new Stack();//-----池子
            //增删查改
            //栈的释放顺序---先进后出
            //压栈---push(object 对象)把这个对象添加到栈顶
            //弹栈---Pop()把栈顶的元素弹出--会删除
            //Peek()---返回栈顶的元素，不删除

            //栈---1s 60帧---每一帧都有一个位置信息 ---每个栈空间都储存了每一帧的，比如玩家的位置信息和血量
            //有一个技能，比如叫回到过去，那么就直接把栈顶的信息弹出


            //压栈
            for (int i=0;i<10;i++) 
            {
                stack.Push(i);
            }

            //因为数据弹出的时候count会变，所以要先确定count的值---count在动态改变---count 实际拥有的元素

            //Console.WriteLine(stack.Count);
            int Static_count = stack.Count;//用一个静态变量接受count的初始值

            //弹栈---pop 方法
            for (int i = 0; i < Static_count; i++)
            {
                Console.WriteLine(stack.Pop());
            }

            //弹栈---peek 方法
            //for (int i = 0; i < stack.Count; i++)
            //{
            //    Console.WriteLine(stack.Peek());//永远弹出第一个，还是用pop方法把
            //}

            //队列---先进后出
            //栈----先进后出
        }
    }
}
